# 编译器
CC = gcc
# 编译选项
CFLAGS = -lm -pthread -Wall -Wextra
# 源文件目录
SRCDIR = src
# 可执行文件名
EXEC = main
# 构建目录
BUILDDIR = build

# 获取src目录下所有.c文件
SRCS = $(shell find $(SRCDIR) -type f -name "*.c")

# 将.c文件替换为.o文件
OBJS = $(SRCS:$(SRCDIR)/%.c=$(BUILDDIR)/%.o)

# 默认目标
all: $(BUILDDIR)/$(EXEC)
# 生成可执行文件
$(BUILDDIR)/$(EXEC): $(OBJS)
	$(CC) $(CFLAGS) $^ -o $@
	@echo "编译完成！"

# 编译.c文件为.o文件
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
	$(CC) $(CFLAGS) -c $< -o $@

# 创建构建目录
$(BUILDDIR):
	mkdir -p $(dir $(OBJS))

# 清理目标文件和可执行文件
clean:
	rm -rf $(BUILDDIR)
	@echo "清理成功！"

.PHONY: all clean